

<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
  <meta charset="utf-8" />
  <meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />

  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  
  <title>File System Shares Over SMB &mdash; Ceph Documentation</title>
  

  
  <link rel="stylesheet" href="../../_static/ceph.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/ceph.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/graphviz.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/css/custom.css" type="text/css" />

  
  

  
  

  

  
  <!--[if lt IE 9]>
    <script src="../../_static/js/html5shiv.min.js"></script>
  <![endif]-->
  
    
      <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
        <script src="../../_static/jquery.js"></script>
        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
        <script src="../../_static/doctools.js"></script>
        <script src="../../_static/sphinx_highlight.js"></script>
    
    <script type="text/javascript" src="../../_static/js/theme.js"></script>

    
    <link rel="index" title="Index" href="../../genindex/" />
    <link rel="search" title="Search" href="../../search/" />
    <link rel="next" title="Progress Module" href="../progress/" />
    <link rel="prev" title="CephFS &amp; RGW Exports over NFS" href="../nfs/" /> 
</head>

<body class="wy-body-for-nav">

   
  <header class="top-bar">
    <div role="navigation" aria-label="Page navigation">
  <ul class="wy-breadcrumbs">
      <li><a href="../../" class="icon icon-home" aria-label="Home"></a></li>
          <li class="breadcrumb-item"><a href="../">Ceph 管理器守护进程</a></li>
      <li class="breadcrumb-item active">File System Shares Over SMB</li>
      <li class="wy-breadcrumbs-aside">
            <a href="../../_sources/mgr/smb.rst.txt" rel="nofollow"> View page source</a>
      </li>
  </ul>
  <hr/>
</div>
  </header>
  <div class="wy-grid-for-nav">
    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search"  style="background: #eee" >
          

          
            <a href="../../" class="icon icon-home"> Ceph
          

          
          </a>

          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../../search/" method="get">
    <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        
        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
              
            
            
              <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../start/">Ceph 简介</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../install/">安装 Ceph</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../cephadm/">Cephadm</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../rados/">Ceph 存储集群</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../cephfs/">Ceph 文件系统</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../rbd/">Ceph 块设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../radosgw/">Ceph 对象网关</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../">Ceph 管理器守护进程</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../administrator/">安装和配置</a></li>
<li class="toctree-l2"><a class="reference internal" href="../modules/">模块编程</a></li>
<li class="toctree-l2"><a class="reference internal" href="../orchestrator_modules/">编写 orchestrator 插件</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dashboard/">仪表盘模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ceph_api/">Ceph RESTful API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../alerts/">Alerts 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../diskprediction/">DiskPrediction 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../localpool/">localpool 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../prometheus/">Prometheus 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../influx/">Influx 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../hello/">Hello 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../telegraf/">Telegraf 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../telemetry/">Telemetry 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../iostat/">Iostat 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../crash/">Crash 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../insights/">Insights 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../orchestrator/">Orchestrator 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../rook/">Rook 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../rgw/">RGW 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mds_autoscaler/">MDS Autoscaler 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../nfs/">NFS 模块</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">SMB module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#management-commands-imperative-style">Management Commands - Imperative Style</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#cluster-commands">Cluster Commands</a></li>
<li class="toctree-l4"><a class="reference internal" href="#share-commands">Share Commands</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#management-commands-declarative-style">Management Commands - Declarative Style</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#composing-resource-specifications">Composing Resource Specifications</a></li>
<li class="toctree-l4"><a class="reference internal" href="#cluster-resource">Cluster Resource</a></li>
<li class="toctree-l4"><a class="reference internal" href="#share-resource">Share Resource</a></li>
<li class="toctree-l4"><a class="reference internal" href="#join-auth-resource">Join-Auth Resource</a></li>
<li class="toctree-l4"><a class="reference internal" href="#users-and-groups-resource">Users-and-Groups Resource</a></li>
<li class="toctree-l4"><a class="reference internal" href="#a-declarative-configuration-example">A Declarative Configuration Example</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#smb-cluster-management">SMB Cluster Management</a></li>
<li class="toctree-l3"><a class="reference internal" href="#accessing-shares">Accessing Shares</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../progress/">Progress 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli_api/">CLI API 命令模块</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../dashboard/">Ceph 仪表盘</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../monitoring/">监控概览</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../api/">API 文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../architecture/">体系结构</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev/developer_guide/">开发者指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev/internals/">Ceph 内幕</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../governance/">项目管理</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../foundation/">Ceph 基金会</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ceph-volume/">ceph-volume</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../releases/general/">Ceph 版本（总目录）</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../releases/">Ceph 版本（索引）</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../security/">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../hardware-monitoring/">硬件监控</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../glossary/">Ceph 术语</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../jaegertracing/">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../translation_cn/">中文版翻译资源</a></li>
</ul>

            
          
        </div>
        
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" aria-label="top navigation">
        
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../../">Ceph</a>
        
      </nav>


      <div class="wy-nav-content">
        
        <div class="rst-content">
        
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
<div id="dev-warning" class="admonition note">
  <p class="first admonition-title">Notice</p>
  <p class="last">This document is for a development version of Ceph.</p>
</div>
  <div id="docubetter" align="right" style="padding: 5px; font-weight: bold;">
    <a href="https://pad.ceph.com/p/Report_Documentation_Bugs">Report a Documentation Bug</a>
  </div>

  
  <section id="file-system-shares-over-smb">
<span id="mgr-smb"></span><h1>File System Shares Over SMB<a class="headerlink" href="#file-system-shares-over-smb" title="Permalink to this heading"></a></h1>
<p>CephFS access can be provided to clients using the <a class="reference external" href="https://en.wikipedia.org/wiki/Server_Message_Block">SMB protocol</a> via the
<a class="reference external" href="https://samba.org">Samba suite</a> and <a class="reference external" href="https://github.com/samba-in-kubernetes/samba-container">samba-container</a> images - managed by Ceph.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">smb</span></code> manager module provides an interface for deploying and controlling
clusters of Samba services as well as managing SMB shares. In the <code class="docutils literal notranslate"><span class="pre">smb</span></code>
manager module a cluster is a logical management unit that may map to one or
more managed Samba service - by itself a cluster may or may not be using any
high-availability mechanisms.</p>
<p>If the module is not already enabled on your cluster you can enable by running
<code class="docutils literal notranslate"><span class="pre">ceph</span> <span class="pre">mgr</span> <span class="pre">module</span> <span class="pre">enable</span> <span class="pre">smb</span></code>.</p>
<p>There are two ways of interacting with the <code class="docutils literal notranslate"><span class="pre">smb</span></code> module. The <a class="reference internal" href="#mgr-smb-imperative"><span class="std std-ref">imperative
method</span></a> uses commands like <code class="docutils literal notranslate"><span class="pre">ceph</span> <span class="pre">smb</span> <span class="pre">cluster</span> <span class="pre">create</span> <span class="pre">...</span></code>
and <code class="docutils literal notranslate"><span class="pre">ceph</span> <span class="pre">smb</span> <span class="pre">share</span> <span class="pre">rm</span> <span class="pre">...</span></code> and should be very familiar to those who have
used Ceph’s <code class="docutils literal notranslate"><span class="pre">nfs</span></code> manager module on the command line. The <a class="reference internal" href="#mgr-smb-declarative"><span class="std std-ref">declarative
method</span></a> uses the command <code class="docutils literal notranslate"><span class="pre">ceph</span> <span class="pre">smb</span> <span class="pre">apply</span></code> to process
“resource descriptions” specified in YAML or JSON. This method should be
familiar to those who have used Ceph orchestration with cephadm, just using SMB
specific resource types.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Ceph managed Samba only supports SMB2 and SMB3 versions of the protocol.
The SMB1 version of the protocol, sometimes known as CIFS, is not supported.
Some systems, such as the Linux kernel, provide tooling for both SMB1 and SMB2+
under the CIFS moniker. Check the documentation of the software packages used
to ensure they support SMB2+ regardless of how the tool is named.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>At this time, the <code class="docutils literal notranslate"><span class="pre">smb</span></code> module requires cephadm orchestration. It
does not function without orchestration.</p>
</div>
<section id="management-commands-imperative-style">
<span id="mgr-smb-imperative"></span><h2>Management Commands - Imperative Style<a class="headerlink" href="#management-commands-imperative-style" title="Permalink to this heading"></a></h2>
<section id="cluster-commands">
<h3>Cluster Commands<a class="headerlink" href="#cluster-commands" title="Permalink to this heading"></a></h3>
<section id="create-cluster">
<h4>Create Cluster<a class="headerlink" href="#create-cluster" title="Permalink to this heading"></a></h4>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>ceph<span class="w"> </span>smb<span class="w"> </span>cluster<span class="w"> </span>create<span class="w"> </span>&lt;cluster_id&gt;<span class="w"> </span><span class="o">{</span>user<span class="p">|</span>active-directory<span class="o">}</span><span class="w"> </span><span class="o">[</span>--domain-realm<span class="o">=</span>&lt;domain_realm&gt;<span class="o">]</span><span class="w"> </span><span class="o">[</span>--domain-join-user-pass<span class="o">=</span>&lt;domain_join_user_pass&gt;<span class="o">]</span><span class="w"> </span><span class="o">[</span>--define-user-pass<span class="o">=</span>&lt;define_user_pass&gt;<span class="o">]</span><span class="w"> </span><span class="o">[</span>--custom-dns<span class="o">=</span>&lt;custom_dns&gt;<span class="o">]</span><span class="w"> </span><span class="o">[</span>--placement<span class="o">=</span>&lt;placement&gt;<span class="o">]</span><span class="w"> </span><span class="o">[</span>--clustering<span class="o">=</span>&lt;clustering&gt;<span class="o">]</span>
</pre></div>
</div>
<p>Create a new logical cluster, identified by the cluster id value. The cluster
create command must specify the authentication mode the cluster will use. This
may either be one of:</p>
<ul class="simple">
<li><p>Custom users and groups, also known as a standalone server, with the <code class="docutils literal notranslate"><span class="pre">user</span></code>
keyword</p></li>
<li><p>An Active Directory (AD) domain member server, with the <code class="docutils literal notranslate"><span class="pre">active-directory</span></code>
keyword</p></li>
</ul>
<p>Options:</p>
<dl class="simple">
<dt>cluster_id</dt><dd><p>A short string uniquely identifying the cluster</p>
</dd>
<dt>auth_mode</dt><dd><p>One of <code class="docutils literal notranslate"><span class="pre">user</span></code> or <code class="docutils literal notranslate"><span class="pre">active-directory</span></code></p>
</dd>
<dt>domain_realm</dt><dd><p>The domain/realm value identifying the AD domain. Required when choosing
<code class="docutils literal notranslate"><span class="pre">active-directory</span></code></p>
</dd>
<dt>domain_join_user_pass</dt><dd><p>A string in the form <code class="docutils literal notranslate"><span class="pre">&lt;username&gt;%&lt;password&gt;</span></code> that will be used to join
Samba servers to the AD domain.</p>
</dd>
<dt>define_user_pass</dt><dd><p>A string of the form <code class="docutils literal notranslate"><span class="pre">&lt;username&gt;%&lt;password&gt;</span></code> that will be used for
authentication in <code class="docutils literal notranslate"><span class="pre">user</span></code> auth_mode.</p>
</dd>
<dt>custom_dns</dt><dd><p>Optional. Can be specified multiple times. One or more IP Addresses that
will be applied to the Samba containers to override the default DNS
resolver(s). This option is intended to be used when the host Ceph node is
not configured to resolve DNS entries within AD domain(s).</p>
</dd>
<dt>placement</dt><dd><p>A Ceph orchestration <a class="reference internal" href="../../cephadm/services/#orchestrator-cli-placement-spec"><span class="std std-ref">placement specifier</span></a></p>
</dd>
<dt>clustering</dt><dd><p>Optional. Control if a cluster abstraction actually uses Samba’s clustering
mechanism.  The value may be one of <code class="docutils literal notranslate"><span class="pre">default</span></code>, <code class="docutils literal notranslate"><span class="pre">always</span></code>, or <code class="docutils literal notranslate"><span class="pre">never</span></code>.
A <code class="docutils literal notranslate"><span class="pre">default</span></code> value indicates that clustering should be enabled if the
placement count value is any value other than 1. A value of <code class="docutils literal notranslate"><span class="pre">always</span></code>
enables clustering regardless of the placement count. A value of <code class="docutils literal notranslate"><span class="pre">never</span></code>
disables clustering regardless of the placement count. If unspecified,
<code class="docutils literal notranslate"><span class="pre">default</span></code> is assumed.</p>
</dd>
<dt>public_addrs</dt><dd><p>Optional. A string in the form of &lt;ipaddress/prefixlength&gt;[%&lt;destination interface&gt;].
Supported only when using Samba’s clustering. Assign “virtual” IP
addresses that will be managed by the clustering subsystem and may automatically
move between nodes running Samba containers.</p>
</dd>
</dl>
</section>
<section id="remove-cluster">
<h4>Remove Cluster<a class="headerlink" href="#remove-cluster" title="Permalink to this heading"></a></h4>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>ceph<span class="w"> </span>smb<span class="w"> </span>cluster<span class="w"> </span>rm<span class="w"> </span>&lt;cluster_id&gt;
</pre></div>
</div>
<p>Remove a logical SMB cluster from the Ceph cluster.</p>
</section>
<section id="list-clusters">
<h4>List Clusters<a class="headerlink" href="#list-clusters" title="Permalink to this heading"></a></h4>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>ceph<span class="w"> </span>smb<span class="w"> </span>cluster<span class="w"> </span>ls<span class="w"> </span><span class="o">[</span>--format<span class="o">=</span>&lt;format&gt;<span class="o">]</span>
</pre></div>
</div>
<p>Print a listing of cluster ids. The output defaults to JSON, select YAML
encoding with the <code class="docutils literal notranslate"><span class="pre">--format=yaml</span></code> option.</p>
</section>
</section>
<section id="share-commands">
<h3>Share Commands<a class="headerlink" href="#share-commands" title="Permalink to this heading"></a></h3>
<section id="create-share">
<h4>Create Share<a class="headerlink" href="#create-share" title="Permalink to this heading"></a></h4>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>ceph<span class="w"> </span>smb<span class="w"> </span>share<span class="w"> </span>create<span class="w"> </span>&lt;cluster_id&gt;<span class="w"> </span>&lt;share_id&gt;<span class="w"> </span>&lt;cephfs_volume&gt;<span class="w"> </span>&lt;path&gt;<span class="w"> </span><span class="o">[</span>--share-name<span class="o">=</span>&lt;share_name&gt;<span class="o">]</span><span class="w"> </span><span class="o">[</span>--subvolume<span class="o">=</span>&lt;subvolume&gt;<span class="o">]</span><span class="w"> </span><span class="o">[</span>--readonly<span class="o">]</span>
</pre></div>
</div>
<p>Create a new SMB share, hosted by the named cluster, that maps to the given
CephFS volume and path.</p>
<p>Options:</p>
<dl class="simple">
<dt>cluster_id</dt><dd><p>A short string uniquely identifying the cluster</p>
</dd>
<dt>share_id</dt><dd><p>A short string uniquely identifying the share</p>
</dd>
<dt>cephfs_volume</dt><dd><p>The name of the cephfs volume to be shared</p>
</dd>
<dt>path</dt><dd><p>A path relative to the root of the volume and/or subvolume</p>
</dd>
<dt>share_name</dt><dd><p>Optional. The public name of the share, visible to clients. If not provided
the <code class="docutils literal notranslate"><span class="pre">share_id</span></code> will be used automatically</p>
</dd>
<dt>subvolume</dt><dd><p>Optional. A subvolume name in the form <code class="docutils literal notranslate"><span class="pre">[&lt;subvolumegroup&gt;/]&lt;subvolume&gt;</span></code>.
The option causes the path to be relative to the CephFS subvolume
specified.</p>
</dd>
<dt>readonly</dt><dd><p>Creates a read-only share</p>
</dd>
</dl>
</section>
<section id="remove-share">
<h4>Remove Share<a class="headerlink" href="#remove-share" title="Permalink to this heading"></a></h4>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>ceph<span class="w"> </span>smb<span class="w"> </span>share<span class="w"> </span>rm<span class="w"> </span>&lt;cluster_id&gt;<span class="w"> </span>&lt;share_id&gt;
</pre></div>
</div>
<p>Remove an SMB Share from the cluster.</p>
</section>
<section id="list-shares">
<h4>List Shares<a class="headerlink" href="#list-shares" title="Permalink to this heading"></a></h4>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>ceph<span class="w"> </span>smb<span class="w"> </span>share<span class="w"> </span>ls<span class="w"> </span>&lt;cluster_id&gt;<span class="w"> </span><span class="o">[</span>--format<span class="o">=</span>&lt;format&gt;<span class="o">]</span>
</pre></div>
</div>
<p>Print a listing of share ids. The output defaults to JSON, select YAML
encoding with the <code class="docutils literal notranslate"><span class="pre">--format=yaml</span></code> option.</p>
</section>
</section>
</section>
<section id="management-commands-declarative-style">
<span id="mgr-smb-declarative"></span><h2>Management Commands - Declarative Style<a class="headerlink" href="#management-commands-declarative-style" title="Permalink to this heading"></a></h2>
<p>In addition to the basic imperative management commands the <code class="docutils literal notranslate"><span class="pre">smb</span></code> manager
module supports configuration using declarative resource specifications.
Resource specifications can be written in either JSON or YAML. These resource
specifications can be applied to the cluster using the <code class="docutils literal notranslate"><span class="pre">ceph</span> <span class="pre">smb</span> <span class="pre">apply</span></code>
command, for example:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>ceph<span class="w"> </span>smb<span class="w"> </span>apply<span class="w"> </span>-i<span class="w"> </span>/path/to/resources.yaml
</pre></div>
</div>
<p>Resources that have already been applied to the Ceph cluster configuration can
be viewed using the <code class="docutils literal notranslate"><span class="pre">ceph</span> <span class="pre">smb</span> <span class="pre">show</span></code> command. For example:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>ceph<span class="w"> </span>smb<span class="w"> </span>show<span class="w"> </span><span class="o">[</span>&lt;resource_name&gt;...<span class="o">]</span>
</pre></div>
</div>
<p>The <code class="docutils literal notranslate"><span class="pre">show</span></code> command can show all resources of a given type or specific
resources by id. <code class="docutils literal notranslate"><span class="pre">resource_name</span></code> arguments can take the following forms:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">ceph.smb.cluster</span></code>: show all cluster resources</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ceph.smb.cluster.&lt;cluster_id&gt;</span></code>: show specific cluster with given cluster id</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ceph.smb.share</span></code>: show all share resources</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ceph.smb.share.&lt;cluster_id&gt;</span></code>: show all share resources part of the given
cluster</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ceph.smb.share.&lt;cluster_id&gt;.&lt;share_id&gt;</span></code>: show specific share resource with
the given cluster and share ids</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ceph.smb.usersgroups</span></code>: show all Users &amp; Groups resources</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ceph.smb.usersgroups.&lt;users_goups_id&gt;</span></code>: show a specific Users &amp; Groups
resource</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ceph.smb.join.auth</span></code>: show all join auth resources</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ceph.smb.join.auth.&lt;auth_id&gt;</span></code>: show a specific join auth resource</p></li>
</ul>
<p>For example:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>ceph<span class="w"> </span>smb<span class="w"> </span>show<span class="w"> </span>ceph.smb.cluster.bob<span class="w"> </span>ceph.smb.share.bob
</pre></div>
</div>
<p>Will show one cluster resource (if it exists) for the cluster “bob” as well as
all share resources associated with the cluster “bob”.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The <cite>show</cite> subcommand prints out resources in the same form that the
<code class="docutils literal notranslate"><span class="pre">apply</span></code> command accepts, making it possible to “round-trip” values
between show and apply.</p>
</div>
<section id="composing-resource-specifications">
<h3>Composing Resource Specifications<a class="headerlink" href="#composing-resource-specifications" title="Permalink to this heading"></a></h3>
<p>A resource specification is made up of one or more Ceph SMB resource
descriptions written in either JSON or YAML formats. More than one resource
can be specified if the resources are contained within a JSON/YAML <em>list</em>,
or a JSON/YAML object containing the key <code class="docutils literal notranslate"><span class="pre">resources</span></code> with a corresponding
<em>list</em> value containing the resources. Additionally, a YAML specification
may consist of a series of YAML documents each containing a resource.</p>
<p>An example YAML based simple list looks like the following:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.cluster</span>
<span class="w">  </span><span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rhumba</span>
<span class="w">  </span><span class="c1"># ... other fields skipped for brevity ...</span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.cluster</span>
<span class="w">  </span><span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">salsa</span>
<span class="w">  </span><span class="c1"># ... other fields skipped for brevity ...</span>
<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.share</span>
<span class="w">  </span><span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">salsa</span>
<span class="w">  </span><span class="nt">share_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">foo</span>
<span class="w">  </span><span class="c1"># ... other fields skipped for brevity ...</span>
</pre></div>
</div>
<p>An example JSON based simple list looks like the following:</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">[</span>
<span class="w">  </span><span class="p">{</span><span class="nt">&quot;resource_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ceph.smb.cluster&quot;</span><span class="p">,</span>
<span class="w">   </span><span class="nt">&quot;cluster_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;rhumba&quot;</span><span class="p">,</span>
<span class="w">   </span><span class="nt">&quot;...&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;... other fields skipped for brevity ...&quot;</span>
<span class="w">  </span><span class="p">},</span>
<span class="w">  </span><span class="p">{</span><span class="nt">&quot;resource_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ceph.smb.cluster&quot;</span><span class="p">,</span>
<span class="w">   </span><span class="nt">&quot;cluster_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;salsa&quot;</span><span class="p">,</span>
<span class="w">   </span><span class="nt">&quot;...&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;... other fields skipped for brevity ...&quot;</span>
<span class="w">  </span><span class="p">},</span>
<span class="w">  </span><span class="p">{</span><span class="nt">&quot;resource_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ceph.smb.share&quot;</span><span class="p">,</span>
<span class="w">   </span><span class="nt">&quot;cluster_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;salsa&quot;</span><span class="p">,</span>
<span class="w">   </span><span class="nt">&quot;share_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;foo&quot;</span><span class="p">,</span>
<span class="w">   </span><span class="nt">&quot;...&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;... other fields skipped for brevity ...&quot;</span>
<span class="w">  </span><span class="p">}</span>
<span class="p">]</span>
</pre></div>
</div>
<p>An example YAML based resource list looks like the following:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">resources</span><span class="p">:</span>
<span class="w">  </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.cluster</span>
<span class="w">    </span><span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rhumba</span>
<span class="w">    </span><span class="c1"># ... other fields skipped for brevity ...</span>
<span class="w">  </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.cluster</span>
<span class="w">    </span><span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">salsa</span>
<span class="w">    </span><span class="c1"># ... other fields skipped for brevity ...</span>
<span class="w">  </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.share</span>
<span class="w">    </span><span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">salsa</span>
<span class="w">    </span><span class="nt">share_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">foo</span>
<span class="w">    </span><span class="c1"># ... other fields skipped for brevity ...</span>
</pre></div>
</div>
<p>An example JSON based resoure list looks like the following:</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="w">  </span><span class="nt">&quot;resources&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w">    </span><span class="p">{</span><span class="nt">&quot;resource_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ceph.smb.cluster&quot;</span><span class="p">,</span>
<span class="w">     </span><span class="nt">&quot;cluster_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;rhumba&quot;</span><span class="p">,</span>
<span class="w">     </span><span class="nt">&quot;...&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;... other fields skipped for brevity ...&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="p">{</span><span class="nt">&quot;resource_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ceph.smb.cluster&quot;</span><span class="p">,</span>
<span class="w">     </span><span class="nt">&quot;cluster_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;salsa&quot;</span><span class="p">,</span>
<span class="w">     </span><span class="nt">&quot;...&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;... other fields skipped for brevity ...&quot;</span>
<span class="w">    </span><span class="p">},</span>
<span class="w">    </span><span class="p">{</span><span class="nt">&quot;resource_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ceph.smb.share&quot;</span><span class="p">,</span>
<span class="w">     </span><span class="nt">&quot;cluster_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;salsa&quot;</span><span class="p">,</span>
<span class="w">     </span><span class="nt">&quot;share_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;foo&quot;</span><span class="p">,</span>
<span class="w">     </span><span class="nt">&quot;...&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;... other fields skipped for brevity ...&quot;</span>
<span class="w">    </span><span class="p">}</span>
<span class="w">  </span><span class="p">]</span>
<span class="p">}</span>
</pre></div>
</div>
<p>An example YAML resource list consisting of multiple documents looks like
the following:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nn">---</span>
<span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.cluster</span>
<span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rhumba</span>
<span class="c1"># ... other fields skipped for brevity ...</span>
<span class="nn">---</span>
<span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.cluster</span>
<span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">salsa</span>
<span class="c1"># ... other fields skipped for brevity ...</span>
<span class="nn">---</span>
<span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.share</span>
<span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">salsa</span>
<span class="nt">share_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">foo</span>
<span class="c1"># ... other fields skipped for brevity ...</span>
</pre></div>
</div>
<p>Each individual resource description must belong to one of the types described
below.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>For brevity, all following examples will use YAML only. Assume that the
equivalent JSON forms are valid.</p>
</div>
</section>
<section id="cluster-resource">
<h3>Cluster Resource<a class="headerlink" href="#cluster-resource" title="Permalink to this heading"></a></h3>
<p>A cluster resource supports the following fields:</p>
<dl>
<dt>resource_type</dt><dd><p>A literal string <code class="docutils literal notranslate"><span class="pre">ceph.smb.cluster</span></code></p>
</dd>
<dt>cluster_id</dt><dd><p>A short string identifying the cluster</p>
</dd>
<dt>auth_mode</dt><dd><p>One of <code class="docutils literal notranslate"><span class="pre">user</span></code> or <code class="docutils literal notranslate"><span class="pre">active-directory</span></code></p>
</dd>
<dt>intent</dt><dd><p>One of <code class="docutils literal notranslate"><span class="pre">present</span></code> or <code class="docutils literal notranslate"><span class="pre">removed</span></code>. If not provided, <code class="docutils literal notranslate"><span class="pre">present</span></code> is
assumed. If <code class="docutils literal notranslate"><span class="pre">removed</span></code> all following fields are optional</p>
</dd>
<dt>domain_settings</dt><dd><p>Object. Ignored/optional for <code class="docutils literal notranslate"><span class="pre">user</span></code> auth. Required for <code class="docutils literal notranslate"><span class="pre">active-directory</span></code>
Fields:</p>
<dl class="simple">
<dt>realm</dt><dd><p>Required string. AD domain/realm name.</p>
</dd>
<dt>join_sources</dt><dd><p>Required list. Each element is an object with <a class="reference internal" href="#join-source-fields"><span class="std std-ref">join source fields</span></a></p>
</dd>
</dl>
</dd>
<dt>user_group_settings</dt><dd><p>List. Ignored/optional for <code class="docutils literal notranslate"><span class="pre">active-directory</span></code>. Each element is an object
with <a class="reference internal" href="#user-group-source-fields"><span class="std std-ref">user group source fields</span></a></p>
</dd>
<dt>custom_dns</dt><dd><p>Optional. List of IP Addresses. IP addresses will be used as DNS
resolver(s) in Samba containers allowing the containers to use domain DNS
even if the Ceph host does not</p>
</dd>
<dt>placement</dt><dd><p>Optional. A Ceph Orchestration <a class="reference internal" href="../../cephadm/services/#orchestrator-cli-placement-spec"><span class="std std-ref">placement specifier</span></a>.  Defaults to one host if not provided</p>
</dd>
<dt>clustering</dt><dd><p>Optional. Control if a cluster abstraction actually uses Samba’s clustering
mechanism.  The value may be one of <code class="docutils literal notranslate"><span class="pre">default</span></code>, <code class="docutils literal notranslate"><span class="pre">always</span></code>, or <code class="docutils literal notranslate"><span class="pre">never</span></code>.
A <code class="docutils literal notranslate"><span class="pre">default</span></code> value indicates that clustering should be enabled if the
placement count value is any value other than 1. A value of <code class="docutils literal notranslate"><span class="pre">always</span></code>
enables clustering regardless of the placement count. A value of <code class="docutils literal notranslate"><span class="pre">never</span></code>
disables clustering regardless of the placement count. If unspecified,
<code class="docutils literal notranslate"><span class="pre">default</span></code> is assumed.</p>
</dd>
<dt>public_addrs</dt><dd><p>List of objects; optional. Supported only when using Samba’s clustering.
Assign “virtual” IP addresses that will be managed by the clustering
subsystem and may automatically move between nodes running Samba
containers.
Fields:</p>
<dl class="simple">
<dt>address</dt><dd><p>Required string. An IP address with a required prefix length (example:
<code class="docutils literal notranslate"><span class="pre">192.168.4.51/24</span></code>). This address will be assigned to one of the
host’s network devices and managed automatically.</p>
</dd>
<dt>destination</dt><dd><p>Optional. String or list of strings. A <code class="docutils literal notranslate"><span class="pre">destination</span></code> defines where
the system will assign the managed IPs. Each string value must be a
network address (example <code class="docutils literal notranslate"><span class="pre">192.168.4.0/24</span></code>). One or more destinations
may be supplied. The typical case is to use exactly one destination and
so the value may be supplied as a string, rather than a list with a
single item. Each destination network will be mapped to a device on a
host. Run <code class="docutils literal notranslate"><span class="pre">cephadm</span> <span class="pre">list-networks</span></code> for an example of these mappings.
If destination is not supplied the network is automatically determined
using the address value supplied and taken as the destination.</p>
</dd>
</dl>
</dd>
<dt>custom_smb_global_options</dt><dd><p>Optional mapping. Specify key-value pairs that will be directly added to
the global <code class="docutils literal notranslate"><span class="pre">smb.conf</span></code> options (or equivalent) of a Samba server.  Do
<em>not</em> use this option unless you are prepared to debug the Samba instances
yourself.</p>
<p>This option is meant for developers, feature investigators, and other
advanced users to take more direct control of a share’s options without
needing to make changes to the Ceph codebase. Entries in this map should
match parameters in <code class="docutils literal notranslate"><span class="pre">smb.conf</span></code> and their values. A special key
<code class="docutils literal notranslate"><span class="pre">_allow_customization</span></code> must appear somewhere in the mapping with the
value of <code class="docutils literal notranslate"><span class="pre">i-take-responsibility-for-all-samba-configuration-errors</span></code> as an
indicator that the user is aware that using this option can easily break
things in ways that the Ceph team can not help with. This special key will
automatically be removed from the list of options passed to Samba.</p>
</dd>
</dl>
<p id="join-source-fields">A join source object supports the following fields:</p>
<dl class="simple">
<dt>source_type</dt><dd><p>Optional. Must be <code class="docutils literal notranslate"><span class="pre">resource</span></code> if specified.</p>
</dd>
<dt>ref</dt><dd><p>String. Required for <code class="docutils literal notranslate"><span class="pre">source_type:</span> <span class="pre">resource</span></code>. Must refer to the ID of a
<code class="docutils literal notranslate"><span class="pre">ceph.smb.join.auth</span></code> resource</p>
</dd>
</dl>
<p id="user-group-source-fields">A user group source object supports the following fields:</p>
<dl class="simple">
<dt>source_type</dt><dd><p>Optional. One of <code class="docutils literal notranslate"><span class="pre">resource</span></code> (the default) or <code class="docutils literal notranslate"><span class="pre">empty</span></code></p>
</dd>
<dt>ref</dt><dd><p>String. Required for <code class="docutils literal notranslate"><span class="pre">source_type:</span> <span class="pre">resource</span></code>. Must refer to the ID of a
<code class="docutils literal notranslate"><span class="pre">ceph.smb.join.auth</span></code> resource</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The <code class="docutils literal notranslate"><span class="pre">source_type</span></code> <code class="docutils literal notranslate"><span class="pre">empty</span></code> is generally only for debugging and testing
the module and should not be needed in production deployments.</p>
</div>
<p>The following is an example of a cluster configured for AD membership:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.cluster</span>
<span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">tango</span>
<span class="nt">auth_mode</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">active-directory</span>
<span class="nt">domain_settings</span><span class="p">:</span>
<span class="w">  </span><span class="nt">realm</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">DOMAIN1.SINK.TEST</span>
<span class="w">  </span><span class="nt">join_sources</span><span class="p">:</span>
<span class="w">    </span><span class="c1"># this join source refers to a join auth resource with id &quot;join1-admin&quot;</span>
<span class="w">    </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">source_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">resource</span>
<span class="w">      </span><span class="nt">ref</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">join1-admin</span>
<span class="nt">custom_dns</span><span class="p">:</span>
<span class="w">  </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;192.168.76.204&quot;</span>
<span class="nt">placement</span><span class="p">:</span>
<span class="w">  </span><span class="nt">count</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
</pre></div>
</div>
<p>The following is an example of a cluster configured for standalone operation:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.cluster</span>
<span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rhumba</span>
<span class="nt">auth_mode</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">user</span>
<span class="nt">user_group_settings</span><span class="p">:</span>
<span class="w">  </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">source_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">resource</span>
<span class="w">    </span><span class="nt">ref</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ug1</span>
<span class="nt">placement</span><span class="p">:</span>
<span class="w">  </span><span class="nt">hosts</span><span class="p">:</span>
<span class="w">    </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">node6.mycluster.sink.test</span>
</pre></div>
</div>
<p>An example cluster resource with intent to remove:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.cluster</span>
<span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rhumba</span>
<span class="nt">intent</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">removed</span>
</pre></div>
</div>
</section>
<section id="share-resource">
<h3>Share Resource<a class="headerlink" href="#share-resource" title="Permalink to this heading"></a></h3>
<p>A share resource supports the following fields:</p>
<dl>
<dt>resource_type</dt><dd><p>A literal string <code class="docutils literal notranslate"><span class="pre">ceph.smb.share</span></code></p>
</dd>
<dt>cluster_id</dt><dd><p>A short string identifying the cluster</p>
</dd>
<dt>share_id</dt><dd><p>A short string identifying the share. Must be Unique within a cluster</p>
</dd>
<dt>intent</dt><dd><p>One of <code class="docutils literal notranslate"><span class="pre">present</span></code> or <code class="docutils literal notranslate"><span class="pre">removed</span></code>. If not provided, <code class="docutils literal notranslate"><span class="pre">present</span></code> is assumed.
If <code class="docutils literal notranslate"><span class="pre">removed</span></code> all following fields are optional</p>
</dd>
<dt>name</dt><dd><p>Optional string. A longer name capable of supporting spaces and other
characters that will be presented to SMB clients</p>
</dd>
<dt>readonly</dt><dd><p>Optional boolean, defaulting to false. If true no clients are permitted to
write to the share</p>
</dd>
<dt>browseable</dt><dd><p>Optional boolean, defaulting to true. If true the share will be included in
share listings visible to clients</p>
</dd>
<dt>cephfs</dt><dd><p>Required object. Fields:</p>
<dl class="simple">
<dt>volume</dt><dd><p>Required string. Name of the cephfs volume to use</p>
</dd>
<dt>path</dt><dd><p>Required string. Path within the volume or subvolume to share</p>
</dd>
<dt>subvolumegroup</dt><dd><p>Optional string. Name of a subvolumegroup to share</p>
</dd>
<dt>subvolume</dt><dd><p>Optional string. Name of a subvolume to share. If <code class="docutils literal notranslate"><span class="pre">subvolumegroup</span></code> is
not set and this value contains a exactly one <code class="docutils literal notranslate"><span class="pre">/</span></code> character, the
subvolume field will automatically be split into
<code class="docutils literal notranslate"><span class="pre">&lt;subvolumegroup&gt;/&lt;subvolume&gt;</span></code> parts for convenience</p>
</dd>
<dt>provider</dt><dd><p>Optional. One of <code class="docutils literal notranslate"><span class="pre">samba-vfs</span></code> or <code class="docutils literal notranslate"><span class="pre">kcephfs</span></code> (<code class="docutils literal notranslate"><span class="pre">kcephfs</span></code> is not yet
supported) . Selects how CephFS storage should be provided to the share</p>
</dd>
</dl>
</dd>
<dt>restrict_access</dt><dd><p>Optional boolean, defaulting to false. If true the share will only permit
access by users explicitly listed in <code class="docutils literal notranslate"><span class="pre">login_control</span></code>.</p>
</dd>
<dt>login_control</dt><dd><p>Optional list of objects. Fields:</p>
<dl class="simple">
<dt>name</dt><dd><p>Required string. Name of the user or group.</p>
</dd>
<dt>category</dt><dd><p>Optional. One of <code class="docutils literal notranslate"><span class="pre">user</span></code> (default) or <code class="docutils literal notranslate"><span class="pre">group</span></code>.</p>
</dd>
<dt>access</dt><dd><p>One of <code class="docutils literal notranslate"><span class="pre">read</span></code> (alias <code class="docutils literal notranslate"><span class="pre">r</span></code>), <code class="docutils literal notranslate"><span class="pre">read-write</span></code> (alias <code class="docutils literal notranslate"><span class="pre">rw</span></code>), <code class="docutils literal notranslate"><span class="pre">none</span></code>,
or <code class="docutils literal notranslate"><span class="pre">admin</span></code>. Specific access level to grant to the user or group when
logging into this share. The <code class="docutils literal notranslate"><span class="pre">none</span></code> value denies access to the share
regardless of the <code class="docutils literal notranslate"><span class="pre">restrict_access</span></code> value.</p>
</dd>
</dl>
</dd>
<dt>custom_smb_share_options</dt><dd><p>Optional mapping. Specify key-value pairs that will be directly added to
the <code class="docutils literal notranslate"><span class="pre">smb.conf</span></code> (or equivalent) of a Samba server.  Do <em>not</em> use this
option unless you are prepared to debug the Samba instances yourself.</p>
<p>This option is meant for developers, feature investigators, and other
advanced users to take more direct control of a share’s options without
needing to make changes to the Ceph codebase. Entries in this map should
match parameters in <code class="docutils literal notranslate"><span class="pre">smb.conf</span></code> and their values. A special key
<code class="docutils literal notranslate"><span class="pre">_allow_customization</span></code> must appear somewhere in the mapping with the
value of <code class="docutils literal notranslate"><span class="pre">i-take-responsibility-for-all-samba-configuration-errors</span></code> as an
indicator that the user is aware that using this option can easily break
things in ways that the Ceph team can not help with. This special key will
automatically be removed from the list of options passed to Samba.</p>
</dd>
</dl>
<p>The following is an example of a share:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.share</span>
<span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">tango</span>
<span class="nt">share_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">sp1</span>
<span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;Staff</span><span class="nv"> </span><span class="s">Pics&quot;</span>
<span class="nt">cephfs</span><span class="p">:</span>
<span class="w">  </span><span class="nt">volume</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cephfs</span>
<span class="w">  </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/pics</span>
<span class="w">  </span><span class="nt">subvolumegroup</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">smbshares</span>
<span class="w">  </span><span class="nt">subvolume</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">staff</span>
</pre></div>
</div>
<p>Another example, this time of a share with an intent to be removed:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.share</span>
<span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">tango</span>
<span class="nt">share_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">sp2</span>
<span class="nt">intent</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">removed</span>
</pre></div>
</div>
</section>
<section id="join-auth-resource">
<h3>Join-Auth Resource<a class="headerlink" href="#join-auth-resource" title="Permalink to this heading"></a></h3>
<p>A join auth resource supports the following fields:</p>
<dl>
<dt>resource_type</dt><dd><p>A literal string <code class="docutils literal notranslate"><span class="pre">ceph.smb.join.auth</span></code></p>
</dd>
<dt>auth_id</dt><dd><p>A short string identifying the join auth resource</p>
</dd>
<dt>intent</dt><dd><p>One of <code class="docutils literal notranslate"><span class="pre">present</span></code> or <code class="docutils literal notranslate"><span class="pre">removed</span></code>. If not provided, <code class="docutils literal notranslate"><span class="pre">present</span></code> is assumed.
If <code class="docutils literal notranslate"><span class="pre">removed</span></code> all following fields are optional</p>
</dd>
<dt>auth</dt><dd><p>Required object. Fields:</p>
<dl class="simple">
<dt>username</dt><dd><p>Required string. User with ability to join a system to AD</p>
</dd>
<dt>password</dt><dd><p>Required string. The AD user’s password</p>
</dd>
</dl>
</dd>
<dt>linked_to_cluster:</dt><dd><p>Optional. A string containing a cluster id. If set, the resource may only
be used with the linked cluster and will automatically be removed when the
linked cluster is removed.</p>
</dd>
</dl>
<p>Example:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.join.auth</span>
<span class="nt">auth_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">join1-admin</span>
<span class="nt">auth</span><span class="p">:</span>
<span class="w">  </span><span class="nt">username</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Administrator</span>
<span class="w">  </span><span class="nt">password</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Passw0rd</span>
</pre></div>
</div>
</section>
<section id="users-and-groups-resource">
<h3>Users-and-Groups Resource<a class="headerlink" href="#users-and-groups-resource" title="Permalink to this heading"></a></h3>
<p>A users &amp; groups resource supports the following fields:</p>
<dl>
<dt>resource_type</dt><dd><p>A literal string <code class="docutils literal notranslate"><span class="pre">ceph.smb.usersgroups</span></code></p>
</dd>
<dt>users_groups_id</dt><dd><p>A short string identifying the users and groups resource</p>
</dd>
<dt>intent</dt><dd><p>One of <code class="docutils literal notranslate"><span class="pre">present</span></code> or <code class="docutils literal notranslate"><span class="pre">removed</span></code>. If not provided, <code class="docutils literal notranslate"><span class="pre">present</span></code> is assumed.
If <code class="docutils literal notranslate"><span class="pre">removed</span></code> all following fields are optional.</p>
</dd>
<dt>values</dt><dd><p>Required object. Fields:</p>
<dl>
<dt>users</dt><dd><p>List of objects. Fields:</p>
<dl class="simple">
<dt>name</dt><dd><p>A user name</p>
</dd>
<dt>password</dt><dd><p>A password</p>
</dd>
</dl>
</dd>
<dt>groups</dt><dd><p>List of objects. Fields:</p>
<dl class="simple">
<dt>name</dt><dd><p>The name of the group</p>
</dd>
</dl>
</dd>
</dl>
</dd>
<dt>linked_to_cluster:</dt><dd><p>Optional. A string containing a cluster id. If set, the resource may only
be used with the linked cluster and will automatically be removed when the
linked cluster is removed.</p>
</dd>
</dl>
<p>Example:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.usersgroups</span>
<span class="nt">users_groups_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ug1</span>
<span class="nt">values</span><span class="p">:</span>
<span class="w">  </span><span class="nt">users</span><span class="p">:</span>
<span class="w">    </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">chuckx</span>
<span class="w">      </span><span class="nt">password</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">3xample101</span>
<span class="w">    </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">steves</span>
<span class="w">      </span><span class="nt">password</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">F00Bar123</span>
<span class="w">    </span><span class="nt">groups</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[]</span>
</pre></div>
</div>
</section>
<section id="a-declarative-configuration-example">
<h3>A Declarative Configuration Example<a class="headerlink" href="#a-declarative-configuration-example" title="Permalink to this heading"></a></h3>
<p>Using the resource descriptions above we can put together an example
that creates a cluster and shares from scratch based on a resource
configuration file. First, create the YAML with the contents:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">resources</span><span class="p">:</span>
<span class="w">  </span><span class="c1"># Define an AD member server cluster</span>
<span class="w">  </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.cluster</span>
<span class="w">    </span><span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">tango</span>
<span class="w">    </span><span class="nt">auth_mode</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">active-directory</span>
<span class="w">    </span><span class="nt">domain_settings</span><span class="p">:</span>
<span class="w">      </span><span class="nt">realm</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">DOMAIN1.SINK.TEST</span>
<span class="w">      </span><span class="nt">join_sources</span><span class="p">:</span>
<span class="w">        </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">source_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">resource</span>
<span class="w">          </span><span class="nt">ref</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">join1-admin</span>
<span class="w">    </span><span class="nt">custom_dns</span><span class="p">:</span>
<span class="w">      </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;192.168.76.204&quot;</span>
<span class="w">    </span><span class="c1"># deploy 1 set of samba containers on a host labeled &quot;ilovesmb&quot;</span>
<span class="w">    </span><span class="nt">placement</span><span class="p">:</span>
<span class="w">      </span><span class="nt">count</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
<span class="w">      </span><span class="nt">label</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ilovesmb</span>
<span class="w">  </span><span class="c1"># Define a join auth that our cluster will use to join AD</span>
<span class="w">  </span><span class="c1"># Warning: Typically you do not want to use the Administrator user</span>
<span class="w">  </span><span class="c1"># to perform joins on a production AD</span>
<span class="w">  </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.join.auth</span>
<span class="w">    </span><span class="nt">auth_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">join1-admin</span>
<span class="w">    </span><span class="nt">auth</span><span class="p">:</span>
<span class="w">      </span><span class="nt">username</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Administrator</span>
<span class="w">      </span><span class="nt">password</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Passw0rd</span>
<span class="w">  </span><span class="c1"># A share that uses the root of a subvolume</span>
<span class="w">  </span><span class="c1"># The share name is the same as its id</span>
<span class="w">  </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.share</span>
<span class="w">    </span><span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">tango</span>
<span class="w">    </span><span class="nt">share_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cache</span>
<span class="w">    </span><span class="nt">cephfs</span><span class="p">:</span>
<span class="w">      </span><span class="nt">volume</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cephfs</span>
<span class="w">      </span><span class="nt">subvolumegroup</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">smb1</span>
<span class="w">      </span><span class="nt">subvolume</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cache</span>
<span class="w">      </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/</span>
<span class="w">  </span><span class="c1"># A share that uses the a sub-dir of a subvolume</span>
<span class="w">  </span><span class="c1"># The share name is not the same as its id</span>
<span class="w">  </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.share</span>
<span class="w">    </span><span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">tango</span>
<span class="w">    </span><span class="nt">share_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">sp1</span>
<span class="w">    </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;Staff</span><span class="nv"> </span><span class="s">Pics&quot;</span>
<span class="w">    </span><span class="nt">cephfs</span><span class="p">:</span>
<span class="w">      </span><span class="nt">volume</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cephfs</span>
<span class="w">      </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/pics</span>
<span class="w">      </span><span class="nt">subvolumegroup</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">smb1</span>
<span class="w">      </span><span class="nt">subvolume</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">staff</span>
</pre></div>
</div>
<p>Save this text to a YAML file named <code class="docutils literal notranslate"><span class="pre">resources.yaml</span></code> and make it available
on a cluster admin host. Then run:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>ceph<span class="w"> </span>smb<span class="w"> </span>apply<span class="w"> </span>-i<span class="w"> </span>resources.yaml
</pre></div>
</div>
<p>The command will print a summary of the changes made and begin to automatically
deploy the needed resources. See <a class="reference internal" href="#accessing-shares">Accessing Shares</a> for more information
about how to test this example deployment.</p>
<p>Later, if these resources are no longer needed they can be cleaned up in one
action with a new file <code class="docutils literal notranslate"><span class="pre">removed.yaml</span></code> containing:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">resources</span><span class="p">:</span>
<span class="w">  </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.cluster</span>
<span class="w">    </span><span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">tango</span>
<span class="w">    </span><span class="nt">intent</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">removed</span>
<span class="w">  </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.join.auth</span>
<span class="w">    </span><span class="nt">auth_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">join1-admin</span>
<span class="w">    </span><span class="nt">intent</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">removed</span>
<span class="w">  </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.share</span>
<span class="w">    </span><span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">tango</span>
<span class="w">    </span><span class="nt">share_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cache</span>
<span class="w">    </span><span class="nt">intent</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">removed</span>
<span class="w">  </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">resource_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ceph.smb.share</span>
<span class="w">    </span><span class="nt">cluster_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">tango</span>
<span class="w">    </span><span class="nt">share_id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">sp1</span>
<span class="w">    </span><span class="nt">intent</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">removed</span>
</pre></div>
</div>
<p>By issuing the command:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>ceph<span class="w"> </span>smb<span class="w"> </span>apply<span class="w"> </span>-i<span class="w"> </span>removed.yaml
</pre></div>
</div>
</section>
</section>
<section id="smb-cluster-management">
<h2>SMB Cluster Management<a class="headerlink" href="#smb-cluster-management" title="Permalink to this heading"></a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">smb</span></code> module will automatically deploy logical clusters on hosts using
cephadm orchestration. This orchestration is automatically triggered when a
cluster has been configured for at least one share. The <code class="docutils literal notranslate"><span class="pre">placement</span></code> field of
the cluster resource is passed onto the orchestration layer and is used to
determine on what nodes of the Ceph cluster Samba containers will be run.</p>
<p>At this time Samba services can only listen on port 445. Due to this
restriction only one Samba server, as part of one cluster, may run on a single
Ceph node at a time. Ensure that the placement specs on each cluster do not
overlap.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">smb</span></code> clusters are fully isolated from each other. This means that, as
long as you have sufficient resources in your Ceph cluster, you can run multiple
independent clusters that may or may not join the same AD domains/forests.
However you should not share a directory with multiple different clusters
that may have different authentication modes and/or identity mapping schemes.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Future versions of the <code class="docutils literal notranslate"><span class="pre">smb</span></code> module may programatically attempt to prevent
such conditions.</p>
</div>
</section>
<section id="accessing-shares">
<h2>Accessing Shares<a class="headerlink" href="#accessing-shares" title="Permalink to this heading"></a></h2>
<p>Once a cluster and it’s component Samba containers have been deployed and the
shares have been configured clients may connect to the servers. Microsoft
Windows systems have SMB support built in and using Windows Explorer a share
can be specified like so: <code class="docutils literal notranslate"><span class="pre">\\&lt;hostname&gt;\&lt;sharename&gt;</span></code>. For example:
<code class="docutils literal notranslate"><span class="pre">\\ceph0.mycluster.sink.test\Staff</span> <span class="pre">Pics</span></code>. The Windows node should
automatically attempt to log into the share. If the cluster and Windows client
are both configured for the same AD Domain then a password-less single sign-on
login will automatically be performed. If the cluster is configured for
<code class="docutils literal notranslate"><span class="pre">user</span></code> auth, a username and password prompt should appear. Enter one user
name and password combination that was specified in the cluster and/or
<code class="docutils literal notranslate"><span class="pre">ceph.smb.usersgroups</span></code> resource.</p>
<p>MacOS X systems and many Linux based systems also support connecting to SMB
shares. Consult the documentation for those Operating Systems and Distributions
for how to connect to SMB shares.</p>
<p>A Ceph cluster operator wanting to quickly test a share is functioning may want
to install <code class="docutils literal notranslate"><span class="pre">smbclient</span></code> or use the Samba Client Container image available from
the <a class="reference external" href="https://github.com/samba-in-kubernetes/samba-container">samba-container</a> project with the image
<code class="docutils literal notranslate"><span class="pre">quay.io/samba.org/samba-client:latest</span></code>. On a client or within the container
run <code class="docutils literal notranslate"><span class="pre">smbclient</span> <span class="pre">-U</span> <span class="pre">&lt;username&gt;</span> <span class="pre">//&lt;hostname&gt;/&lt;sharename&gt;</span></code> and enter the password
at the prompt. Refer to the <a class="reference external" href="https://www.samba.org/samba/docs/current/man-html/smbclient.1.html">smbclient documentation</a> for more details.</p>
</section>
</section>



<div id="support-the-ceph-foundation" class="admonition note">
  <p class="first admonition-title">Brought to you by the Ceph Foundation</p>
  <p class="last">The Ceph Documentation is a community resource funded and hosted by the non-profit <a href="https://ceph.io/en/foundation/">Ceph Foundation</a>. If you would like to support this and our other efforts, please consider <a href="https://ceph.io/en/foundation/join/">joining now</a>.</p>
</div>


           </div>
           
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="../nfs/" class="btn btn-neutral float-left" title="CephFS &amp; RGW Exports over NFS" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
        <a href="../progress/" class="btn btn-neutral float-right" title="Progress Module" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    </div>

  <hr/>

  <div role="contentinfo">
    <p>&#169; Copyright 2016, Ceph authors and contributors. Licensed under Creative Commons Attribution Share Alike 3.0 (CC-BY-SA-3.0).</p>
  </div>

   

</footer>
        </div>
      </div>

    </section>

  </div>
  

  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script>

  
  
    
   

</body>
</html>